package ppdvi_pack.controller;

import java.util.AbstractCollection;
import java.util.AbstractList;
import java.util.ArrayList;

import javax.faces.bean.ManagedBean;

import javax.faces.model.DataModel;

import java.util.List;

import javax.faces.bean.SessionScoped;

import javax.faces.model.ListDataModel;

import javax.faces.model.SelectItem;

import ppdvi_pack.dao.AllDAO;


import ppdvi_pack.model.Cidade;
import ppdvi_pack.model.Cliente;

@ManagedBean(name = "clienteController")
@SessionScoped
public class ClienteController {

    public ClienteController() {
        super();
    }

    private List<SelectItem> cidadess = new ArrayList<SelectItem>();
    private Cliente cliente = new Cliente();
    private DataModel clientes;
   

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setClientes(DataModel clientes) {
        this.clientes = clientes;
    }

    public DataModel getClientes() {
        List<Object> list = new AllDAO().findAll("Cliente");
        clientes = new ListDataModel(list);
        return clientes;
    }

    public void setCidadess(List<SelectItem> cidades) {
        this.cidadess = cidades;
    }
    
    public List<SelectItem> getCidadess() {
        AllDAO dao = new AllDAO();
        List<Object> list = new ArrayList();
        List<Cidade> listCid = new ArrayList();
        list = dao.findAll("Cidade");

        Cidade c1 = new Cidade();
        Cidade c2 = new Cidade();
        c1 = (Cidade)list.get(1);
        c2 = (Cidade)list.get(0);
                               
        System.out.println("Size "+list.size()+" cidade-"+c1.getNome());
        System.out.println("Size "+list.size()+" cidade-"+c2.getNome());
        /*        new List<Cidade> listCid.set(0, new Cidade());*/

        for (int i = 0; i < list.size(); i++) {
            listCid.add((Cidade)list.get(i));
        }

        for (Cidade c : listCid) {
            cidadess.add(new SelectItem(c, c.getNome()));
        }
        return cidadess;
    }

    public Object selecionarCliente() {
        this.cliente = (Cliente)clientes.getRowData();
        return "clienteForm.jsf";
    }

    public Object salvarCliente() {
        AllDAO pdao = new AllDAO();
        pdao.salvar(this.cliente);
        return null;
    }


    public Object excluirCliente() {   
        AllDAO pdao = new AllDAO();
        pdao.delete(this.cliente);
        return null;
    }

    public Object voltar() {

        return "clienteView.jsf";
    }


    public Object novoCliente() {
        this.cliente = new Cliente();
        return "clienteForm.jsf";       
    }

    public Object excluirClienteGrid() {
        this.cliente = (Cliente)clientes.getRowData();
        AllDAO pdao = new AllDAO();
        pdao.delete(this.cliente);
        return null;
    }
}
